/**
 * Alipay.com Inc.
 * Copyright (c) 2004-2024 All Rights Reserved.
 */
package com.alipay.demo.service;

import com.alipay.api.domain.CertificateQueryInfo;
import com.alipay.api.domain.CertificateReverseResult;
import com.alipay.api.domain.CertificateUseResult;
import com.alipay.api.response.AlipayMarketingCertificateCertificationPrepareuseResponse;
import com.alipay.api.response.AlipayMarketingCertificateUserBatchqueryResponse;
import com.alipay.demo.vo.CertificationRefundConfirmCommitRequest;
import com.alipay.demo.vo.CertificationRefundRequest;
import com.alipay.demo.vo.CertificationUseRequest;
import com.alipay.demo.vo.OpenResponse;

import java.util.List;

/**
 * @author jishupei.jsp
 * @version : MarketingCertificateService, v0.1 2024年03月15日 12:06 下午 jishupei.jsp Exp $
 */
public interface MarketingCertificateService {
    /**
     * 凭证核销准备
     */
    OpenResponse<AlipayMarketingCertificateCertificationPrepareuseResponse> certificationPrepareUse(String code, String encryptedData, Boolean crossOrder);

    /**
     * 凭证核销
     */
    OpenResponse<List<CertificateUseResult>> certificationUse(CertificationUseRequest useRequest);

    /**
     * 凭证核销状态撤销
     */
    OpenResponse<List<CertificateReverseResult>> certificationRefund(CertificationRefundRequest refundRequest);

    /**
     * 订单退款前商户回复确认退款结果
     */
    OpenResponse<Void> orderRefundConfirmCommit(CertificationRefundConfirmCommitRequest commitRequest);

    /**
     * 凭证查询
     */
    OpenResponse<List<CertificateQueryInfo>> certificationQuery(String orderId, List<String> certificateIdList, String userIdOrOpenId);

    /**
     * 凭证分页查询
     */
    OpenResponse<AlipayMarketingCertificateUserBatchqueryResponse> certificationList(Long pageNum, Long pageSize,
                                                                                     String userIdOrOpenId, String certificateStatus);
}
